﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ToqueDeDarsena.Models;
using TrabajoFinal.Models;

namespace ToqueDeDarsena.Controllers
{
    public class GraficoController : Controller
    {
        //
        // GET: /Grafico/

        ContextoDatos db = new ContextoDatos();

        public ActionResult Index()
        {
           // Dictionary<DateTime>
            return View();
        }

        public ActionResult Graficar()
        {
            var listado = db.Darsenas.ToList();
            //Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();
            var fechaActual = DateTime.Now.Date;
            var fechaActualI = DateTime.Now.Day + "/" + DateTime.Now.Month + "/" + DateTime.Now.Year;
            
            var primeraFecha = db.Darsenas.ToList()[0].fecha.Date;
            

            List<DatoGrafico> datos = new List<DatoGrafico>();

            while (primeraFecha < fechaActual)
            {
                var fechaI = primeraFecha.Day.ToString() + "/" + primeraFecha.Month.ToString() + "/" + primeraFecha.Year.ToString();
                var lista = (from i in db.Darsenas.ToList()
                             where (i.fecha.Day.ToString() + '/' + i.fecha.Month.ToString() + '/' + i.fecha.Year.ToString()) == fechaI
                             select i.usuario).ToList();

                
                if(lista != null)
                {
                    DatoGrafico dato = new DatoGrafico();
                    dato.fecha = fechaI;
                    Comparador comp = new Comparador();
                    lista.Sort(comp);

                    string opActual = lista[0].usuario;

                    if (dato.operarios.Count == 0)
                    {
                        DatoGrafico.Operario op = new DatoGrafico.Operario();
                        op.usr = lista[0].usuario;
                        op.cantidad = 0;
                        dato.operarios.Add(op);
                    }
                    int i = 0; 
                    foreach(var elem in lista)
                    {
                        if (opActual == elem.usuario)
                            dato.operarios[i].cantidad++;
                        else
                        {
                            DatoGrafico.Operario op = new DatoGrafico.Operario();
                            op.usr = elem.usuario;
                            op.cantidad = 1;
                            dato.operarios.Add(op);
                            i++;
                            opActual = elem.usuario;
                        }
                    }
                    datos.Add(dato);
                }
                
                primeraFecha = primeraFecha.AddDays(1);
            }

                   /*         if (listado != null)
                foreach (var i in listado)
                {
                    if (dict.ContainsKey(i.fecha.Day.ToString()+'/'+i.fecha.Month.ToString()+'/'+i.fecha.Year.ToString()))
                        dict[i.fecha.Day.ToString()+'/'+i.fecha.Month.ToString()+'/'+i.fecha.Year.ToString()].Add(i.usuario.usuario);
                    else
                    {
                        dict[i.fecha.Day.ToString()+'/'+i.fecha.Month.ToString()+'/'+i.fecha.Year.ToString()] = new List<string>();
                        dict[i.fecha.Day.ToString()+'/'+i.fecha.Month.ToString()+'/'+i.fecha.Year.ToString()].Add(i.usuario.usuario);
                    }
                }*/
            
           
            return Json(datos, JsonRequestBehavior.AllowGet);
        }

        public class Comparador : IComparer<Usuario>
        {
            public int Compare(Usuario x, Usuario y)
            {
                return x.usuario.CompareTo(x.usuario);
            }
        }

    }
}
